package com.mazaiting.rtda;

import lombok.Data;

/**
 * 帧
 *
 * @author mazaiting
 * @since 2021/8/13
 */
@Data
public class MtFrame {
    /**
     * 上一帧的引用
     * 实现链表数据结构
     */
    public MtFrame lower;
    /**
     * 局部变量表
     * 保存局部变量表指针
     */
    private MtLocalVars localVars;
    /**
     * 操作数栈
     * 保存操作数栈指针
     */
    private MtOperandStack operandStack;

    /**
     * 执行方法所需的局部变量表大小和操作数栈深度是由编译器 预先计算好的，存储在class文件method_info结构的Code属性
     * @param maxLocals 最大局部变量表大小
     * @param maxStack 最大操作数栈大小
     */
    public MtFrame(int maxLocals, int maxStack) {
        this.localVars = new MtLocalVars(maxLocals);
        this.operandStack = new MtOperandStack(maxStack);
    }
}


















